package com.inei.evaluaciondelaencuesta.model.dao;

import java.util.ArrayList;
import java.util.List;
import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import com.inei.evaluaciondelaencuesta.model.connection.UtilDB;
import com.inei.evaluaciondelaencuesta.model.entity.RespuestaEncuesta;

public class RespuestaEncuestaDao {

	// variables
	private UtilDB util;
	private SQLiteDatabase db;
	private Cursor cursor = null;
	private Context context;

	public RespuestaEncuestaDao(Context context) {
		this.context = context;
		util = new UtilDB(context);
	}

	public List<RespuestaEncuesta> leerPersona(int marco_id, int formato_id,
			int codPer, String hogar_id) {
		List<RespuestaEncuesta> lista = null;
		db = util.getReadableDatabase();
		cursor = db
				.rawQuery(
						"select * from RespuestaEncuesta where marco_id=? and formato_id=? and hogar=?  and orden=? and cap<>? order by respuesta_id",
						new String[] { marco_id + "", formato_id + "",
								hogar_id, codPer + "", "11" });
		if (cursor.moveToFirst()) {
			lista = new ArrayList<RespuestaEncuesta>();
			do {
				RespuestaEncuesta obj = new RespuestaEncuesta();
				obj.setRespuesta_id(cursor.getInt(cursor
						.getColumnIndex("respuesta_id")));
				obj.setFormato_id(cursor.getInt(cursor
						.getColumnIndex("formato_id")));
				obj.setMarco_id(cursor.getInt(cursor.getColumnIndex("marco_id")));
				obj.setConglomerado(cursor.getString(cursor
						.getColumnIndex("conglomerado")));
				obj.setGrupo(cursor.getString(cursor.getColumnIndex("grupo")));
				obj.setVivienda(cursor.getString(cursor
						.getColumnIndex("vivienda")));
				obj.setHogar(cursor.getString(cursor.getColumnIndex("hogar")));
				obj.setTipo_reg(cursor.getString(cursor
						.getColumnIndex("tipo_reg")));
				obj.setOrden(cursor.getString(cursor.getColumnIndex("orden")));
				obj.setCap(cursor.getString(cursor.getColumnIndex("cap")));
				obj.setTipo(cursor.getString(cursor.getColumnIndex("tipo")));
				obj.setCodigo(cursor.getString(cursor.getColumnIndex("codigo")));
				obj.setP_LECTU(cursor.getString(cursor
						.getColumnIndex("P_LECTU")));
				obj.setP_COMPR(cursor.getString(cursor
						.getColumnIndex("P_COMPR")));
				obj.setP_OTRO(cursor.getString(cursor.getColumnIndex("P_OTRO")));
				obj.setP_OTRO_ESP(cursor.getString(cursor
						.getColumnIndex("P_OTRO_ESP")));
				obj.setP_REFOR(cursor.getString(cursor
						.getColumnIndex("P_REFOR")));
				obj.setP_ERROR(cursor.getString(cursor
						.getColumnIndex("P_ERROR")));
				obj.setP_OBS(cursor.getString(cursor.getColumnIndex("P_OBS")));
				obj.setP_DIREC(cursor.getString(cursor
						.getColumnIndex("P_DIREC")));
				obj.setP_IH(cursor.getString(cursor.getColumnIndex("P_IH")));
				obj.setP_IM(cursor.getString(cursor.getColumnIndex("P_IM")));
				obj.setP_FH(cursor.getString(cursor.getColumnIndex("P_FH")));
				obj.setP_FM(cursor.getString(cursor.getColumnIndex("P_FM")));
				obj.setP_TM(cursor.getInt(cursor.getColumnIndex("P_TM")));
				lista.add(obj);
			} while (cursor.moveToNext());
		}
		Cerrar();

		return lista;
	}

	public List<RespuestaEncuesta> leerPersona11(int marco_id, int formato_id,
			int codPer, String hogar_id) {
		List<RespuestaEncuesta> lista = null;
		db = util.getReadableDatabase();
		cursor = db
				.rawQuery(
						"select * from RespuestaEncuesta where marco_id=? and formato_id=? and hogar=?  and orden=? and cap=? order by respuesta_id",
						new String[] { marco_id + "", formato_id + "",
								hogar_id, codPer + "", "11" });
		if (cursor.moveToFirst()) {
			lista = new ArrayList<RespuestaEncuesta>();
			do {
				RespuestaEncuesta obj = new RespuestaEncuesta();
				obj.setRespuesta_id(cursor.getInt(cursor
						.getColumnIndex("respuesta_id")));
				obj.setFormato_id(cursor.getInt(cursor
						.getColumnIndex("formato_id")));
				obj.setMarco_id(cursor.getInt(cursor.getColumnIndex("marco_id")));
				obj.setConglomerado(cursor.getString(cursor
						.getColumnIndex("conglomerado")));
				obj.setGrupo(cursor.getString(cursor.getColumnIndex("grupo")));
				obj.setVivienda(cursor.getString(cursor
						.getColumnIndex("vivienda")));
				obj.setHogar(cursor.getString(cursor.getColumnIndex("hogar")));
				obj.setTipo_reg(cursor.getString(cursor
						.getColumnIndex("tipo_reg")));
				obj.setOrden(cursor.getString(cursor.getColumnIndex("orden")));
				obj.setCap(cursor.getString(cursor.getColumnIndex("cap")));
				obj.setTipo(cursor.getString(cursor.getColumnIndex("tipo")));
				obj.setCodigo(cursor.getString(cursor.getColumnIndex("codigo")));
				obj.setP_LECTU(cursor.getString(cursor
						.getColumnIndex("P_LECTU")));
				obj.setP_COMPR(cursor.getString(cursor
						.getColumnIndex("P_COMPR")));
				obj.setP_OTRO(cursor.getString(cursor.getColumnIndex("P_OTRO")));
				obj.setP_OTRO_ESP(cursor.getString(cursor
						.getColumnIndex("P_OTRO_ESP")));
				obj.setP_REFOR(cursor.getString(cursor
						.getColumnIndex("P_REFOR")));
				obj.setP_ERROR(cursor.getString(cursor
						.getColumnIndex("P_ERROR")));
				obj.setP_OBS(cursor.getString(cursor.getColumnIndex("P_OBS")));
				obj.setP_DIREC(cursor.getString(cursor
						.getColumnIndex("P_DIREC")));
				obj.setP_IH(cursor.getString(cursor.getColumnIndex("P_IH")));
				obj.setP_IM(cursor.getString(cursor.getColumnIndex("P_IM")));
				obj.setP_FH(cursor.getString(cursor.getColumnIndex("P_FH")));
				obj.setP_FM(cursor.getString(cursor.getColumnIndex("P_FM")));
				obj.setP_TM(cursor.getInt(cursor.getColumnIndex("P_TM")));
				lista.add(obj);
			} while (cursor.moveToNext());
		}
		Cerrar();

		return lista;
	}

	public List<RespuestaEncuesta> leerCap(int marco_id, int formato_id,
			int cap, String hogar_id) {
		List<RespuestaEncuesta> lista = null;
		db = util.getReadableDatabase();
		cursor = db
				.rawQuery(
						"select * from RespuestaEncuesta where marco_id=? and formato_id=? and hogar=? and cap=? order by respuesta_id",
						new String[] { marco_id + "", formato_id + "",
								hogar_id, cap + "" });
		if (cursor.moveToFirst()) {
			lista = new ArrayList<RespuestaEncuesta>();
			do {
				RespuestaEncuesta obj = new RespuestaEncuesta();
				obj.setRespuesta_id(cursor.getInt(cursor
						.getColumnIndex("respuesta_id")));
				obj.setFormato_id(cursor.getInt(cursor
						.getColumnIndex("formato_id")));
				obj.setMarco_id(cursor.getInt(cursor.getColumnIndex("marco_id")));
				obj.setConglomerado(cursor.getString(cursor
						.getColumnIndex("conglomerado")));
				obj.setGrupo(cursor.getString(cursor.getColumnIndex("grupo")));
				obj.setVivienda(cursor.getString(cursor
						.getColumnIndex("vivienda")));
				obj.setHogar(cursor.getString(cursor.getColumnIndex("hogar")));
				obj.setTipo_reg(cursor.getString(cursor
						.getColumnIndex("tipo_reg")));
				obj.setOrden(cursor.getString(cursor.getColumnIndex("orden")));
				obj.setCap(cursor.getString(cursor.getColumnIndex("cap")));
				obj.setTipo(cursor.getString(cursor.getColumnIndex("tipo")));
				obj.setCodigo(cursor.getString(cursor.getColumnIndex("codigo")));
				obj.setP_LECTU(cursor.getString(cursor
						.getColumnIndex("P_LECTU")));
				obj.setP_COMPR(cursor.getString(cursor
						.getColumnIndex("P_COMPR")));
				obj.setP_OTRO(cursor.getString(cursor.getColumnIndex("P_OTRO")));
				obj.setP_OTRO_ESP(cursor.getString(cursor
						.getColumnIndex("P_OTRO_ESP")));
				obj.setP_REFOR(cursor.getString(cursor
						.getColumnIndex("P_REFOR")));
				obj.setP_ERROR(cursor.getString(cursor
						.getColumnIndex("P_ERROR")));
				obj.setP_OBS(cursor.getString(cursor.getColumnIndex("P_OBS")));
				obj.setP_DIREC(cursor.getString(cursor
						.getColumnIndex("P_DIREC")));
				obj.setP_IH(cursor.getString(cursor.getColumnIndex("P_IH")));
				obj.setP_IM(cursor.getString(cursor.getColumnIndex("P_IM")));
				obj.setP_FH(cursor.getString(cursor.getColumnIndex("P_FH")));
				obj.setP_FM(cursor.getString(cursor.getColumnIndex("P_FM")));
				obj.setP_TM(cursor.getInt(cursor.getColumnIndex("P_TM")));
				lista.add(obj);
			} while (cursor.moveToNext());
		}
		Cerrar();

		return lista;
	}

	public List<RespuestaEncuesta> leer(int marco_id, int formato_id) {
		List<RespuestaEncuesta> lista = null;
		db = util.getReadableDatabase();
		cursor = db
				.rawQuery(
						"select * from RespuestaEncuesta where marco_id=? and formato_id=? order by respuesta_id",
						new String[] { marco_id + "", formato_id + "" });
		if (cursor.moveToFirst()) {
			lista = new ArrayList<RespuestaEncuesta>();
			while (!cursor.isAfterLast()) {
				RespuestaEncuesta obj = new RespuestaEncuesta();
				obj.setRespuesta_id(cursor.getInt(cursor
						.getColumnIndex("respuesta_id")));
				obj.setFormato_id(cursor.getInt(cursor
						.getColumnIndex("formato_id")));
				obj.setMarco_id(cursor.getInt(cursor.getColumnIndex("marco_id")));
				obj.setConglomerado(cursor.getString(cursor
						.getColumnIndex("conglomerado")));
				obj.setGrupo(cursor.getString(cursor.getColumnIndex("grupo")));
				obj.setVivienda(cursor.getString(cursor
						.getColumnIndex("vivienda")));
				obj.setHogar(cursor.getString(cursor.getColumnIndex("hogar")));
				obj.setTipo_reg(cursor.getString(cursor
						.getColumnIndex("tipo_reg")));
				obj.setOrden(cursor.getString(cursor.getColumnIndex("orden")));
				obj.setCap(cursor.getString(cursor.getColumnIndex("cap")));
				obj.setTipo(cursor.getString(cursor.getColumnIndex("tipo")));
				obj.setCodigo(cursor.getString(cursor.getColumnIndex("codigo")));
				obj.setP_LECTU(cursor.getString(cursor
						.getColumnIndex("P_LECTU")));
				obj.setP_COMPR(cursor.getString(cursor
						.getColumnIndex("P_COMPR")));
				obj.setP_OTRO(cursor.getString(cursor.getColumnIndex("P_OTRO")));
				obj.setP_OTRO_ESP(cursor.getString(cursor
						.getColumnIndex("P_OTRO_ESP")));
				obj.setP_REFOR(cursor.getString(cursor
						.getColumnIndex("P_REFOR")));
				obj.setP_ERROR(cursor.getString(cursor
						.getColumnIndex("P_ERROR")));
				obj.setP_OBS(cursor.getString(cursor.getColumnIndex("P_OBS")));
				obj.setP_DIREC(cursor.getString(cursor
						.getColumnIndex("P_DIREC")));
				obj.setP_IH(cursor.getString(cursor.getColumnIndex("P_IH")));
				obj.setP_IM(cursor.getString(cursor.getColumnIndex("P_IM")));
				obj.setP_FH(cursor.getString(cursor.getColumnIndex("P_FH")));
				obj.setP_FM(cursor.getString(cursor.getColumnIndex("P_FM")));
				obj.setP_TM(cursor.getInt(cursor.getColumnIndex("P_TM")));
				lista.add(obj);
				cursor.moveToNext();
			}
		}
		Cerrar();
		return lista;
	}

	public int crear(List<RespuestaEncuesta> lista) {
		int resultado = 0;
		db = util.getWritableDatabase();
		db.beginTransaction();
		for (RespuestaEncuesta o : lista) {
			ContentValues valores = new ContentValues();
			valores.put("formato_id", o.getFormato_id());
			valores.put("marco_id", o.getMarco_id());
			valores.put("conglomerado", o.getConglomerado());
			valores.put("grupo", o.getGrupo());
			valores.put("vivienda", o.getVivienda());
			valores.put("hogar", o.getHogar());
			valores.put("tipo_reg", o.getTipo_reg());
			valores.put("orden", o.getOrden());
			valores.put("cap", o.getCap());
			valores.put("tipo", o.getTipo());
			valores.put("codigo", o.getCodigo());
			valores.put("P_LECTU", o.getP_LECTU());
			valores.put("P_COMPR", o.getP_COMPR());
			valores.put("P_OTRO", o.getP_OTRO());
			valores.put("P_OTRO_ESP", o.getP_OTRO_ESP());
			valores.put("P_REFOR", o.getP_REFOR());
			valores.put("P_ERROR", o.getP_ERROR());
			valores.put("P_OBS", o.getP_OBS());
			valores.put("P_DIREC", o.getP_DIREC());
			valores.put("P_IH", o.getP_IH());
			valores.put("P_IM", o.getP_IM());
			valores.put("P_FH", o.getP_FH());
			valores.put("P_FM", o.getP_FM());
			valores.put("P_TM", o.getP_TM());
			resultado = (int) db.insert("RespuestaEncuesta", null, valores);
			if (resultado < 0) {
				Cerrar();
				return resultado;
			}
		}
		if (resultado > 0) {
			db.setTransactionSuccessful();
		}
		Cerrar();
		return resultado;
	}

	public int eliminar(RespuestaEncuesta o) {
		// TODO Auto-generated method stub
		return 0;
	}

	public int actualizar(List<RespuestaEncuesta> lista) {
		int resultado = 0;
		db = util.getWritableDatabase();
		db.beginTransaction();
		for (RespuestaEncuesta o : lista) {
			ContentValues valores = new ContentValues();
			valores.put("P_LECTU", o.getP_LECTU());
			valores.put("P_COMPR", o.getP_COMPR());
			valores.put("P_OTRO", o.getP_OTRO());
			valores.put("P_OTRO_ESP", o.getP_OTRO_ESP());
			valores.put("P_REFOR", o.getP_REFOR());
			valores.put("P_ERROR", o.getP_ERROR());
			valores.put("P_OBS", o.getP_OBS());
			valores.put("P_DIREC", o.getP_DIREC());
			valores.put("P_IH", o.getP_IH());
			valores.put("P_IM", o.getP_IM());
			valores.put("P_FH", o.getP_FH());
			valores.put("P_FM", o.getP_FM());
			valores.put("P_TM", o.getP_TM());

			resultado = (int) db
					.update("RespuestaEncuesta",
							valores,
							"respuesta_id=? and formato_id=? and marco_id=? and hogar=? and tipo_reg=? and cap=? and tipo=? and codigo=?",
							new String[] { o.getRespuesta_id() + "",
									o.getFormato_id() + "",
									o.getMarco_id() + "", o.getHogar() + "",
									o.getTipo_reg() + "", o.getCap() + "",
									o.getTipo() + "", o.getCodigo() + "" });
			if (resultado < 0) {
				Cerrar();
				return resultado;
			}
		}
		if (resultado > 0) {
			db.setTransactionSuccessful();
		}
		Cerrar();
		return resultado;
	}

	private void Cerrar() {
		if (cursor != null) {
			cursor.close();
		}
		if (db.inTransaction()) {
			db.endTransaction();
		}
		db.close();
	}
}
